package com.libo.homework

/**
 * 第一题、百元喝酒
 *
 * 作业要求：每瓶啤酒2元，3个空酒瓶或者5个瓶盖可换1瓶啤酒。100元最多可喝多少瓶啤酒？
 * （不允许借啤酒）思路：利用递归算法，一次性买完，然后递归算出瓶盖和空瓶能换的啤酒数
 */
object Homework1 extends App {

  var bottle = 100 / 2

  val res = bottle + drinkBeer(bottle, bottle, 0)
  println(s"一共可以喝$res 瓶啤酒")


  def drinkBeer(empty: Int, cap: Int, bottle: Int): Int = {

    if (empty < 3 && cap < 5) {
      return bottle
    }
    // 空瓶换的啤酒数
    val a1 = empty / 3
    // 换过后剩余啤酒数
    val a2 = empty % 3
    // 瓶盖换的啤酒数
    val b1 = cap / 5
    //瓶盖剩余数
    val b2 = cap % 5

    drinkBeer(a1 + a2 + b1, a1 + b1 + b2, a1 + b1 + bottle)
  }


}
